1.13 Verzweigungen
 
Nun hat der Benutzer seinen Namen eingegeben und dieser ist an eine Variable übergeben worden. Was geschieht jedoch, wenn der Benutzer seinen Namen nicht eingibt? Dann soll er einen Hinweis erhalten, dass er seinen Namen eingeben muss, sonst gibt es keinen Kaffee - wie im richtigen Leben eben.
Diese Abfrage, oder genauer: diese Entscheidung, wird mit einer Verzweigung vorgenommen. Wahrscheinlich kennen Sie diese Anweisung schon, sie lautet:
If txtName.Text = "" Then MessageBox.Show _
("Hey, Benutzer, dein Name fehlt! ")
Dann würde der Benutzer nach der Schelte seinen Kaffee erhalten. Das soll er aber nicht. Ich verwende die oben beschriebene einzeilige Syntax sehr selten, lieber schreibe ich die If-Verzweigung auf mehrere Zeilen verteilt. Drückt man nach der Bedingung
If txtName.Text = "" Then
die (Enter), dann erscheint zwei Zeilen tiefer das Ende der Verzweigung:
End If
Zwischen diese beiden Zeilen kann man die Anweisung schreiben:
If txtName.Text = "" Then
MessageBox.Show _
("Hey, Benutzer, dein Name fehlt! ")
End If
Damit erhält der Benutzer immer noch Kaffee. Aber man hat einen besseren Überblick und kann mehr als eine Befehlszeile verwenden (zum Beispiel, wenn man den Benutzer dreimal hintereinander beschimpfen möchte).
Wenn kein Name eingegeben wurde, dann reagiere so, ansonsten gibt es Kaffee. Dieses umgangssprachliche »sonst« kann auch in den Code eingebaut werden - mit dem Befehl Else:
If txtName.Text = "" Then
MessageBox.Show _
("Hey, Benutzer, dein Name fehlt! ")
Else
MessageBox.Show(Achtung: " & txtName.Text & _
"Jetzt gibt es Kaffee! ")
End If
Sollen mehr als zwei Fälle geprüft werden, dann kann dies mit der Anweisung ElseIf erledigt werden. Soll beispielsweise Hugo Tee und Maria Schokolade bekommen, dann ist so vorzugehen:
If txtName.Text = "" Then
MessageBox.Show _
("Hey, Benutzer, dein Name fehlt! ")
ElseIf txtName.Text = "Hugo" Then
MessageBox.Show(Achtung: " & txtName.Text & _
"Jetzt gibt es Tee! ")
ElseIf txtName.Text = "Maria" Then
MessageBox.Show(Achtung: " & txtName.Text & _
"Jetzt gibt es Schokolade! ")
Else
MessageBox.Show(Achtung: " & txtName.Text & _
"Jetzt gibt es Kaffee! ")
End If
Überprüft wird der Code von oben nach unten. Zuerst wird also geprüft, ob nichts eingegeben wurde. Dann wird Hugo überprüft, dann Maria und schließlich der Rest.
Im Übrigen können Verzweigungen auch ineinander geschachtelt werden. Dazu bräuchte man allerdings noch eine zweite Information, die man überprüfen könnte. Das Ganze sieht dann beispielsweise so aus:
If txtName.Text = "" Then
MessageBox.Show _
("Hey, Benutzer, dein Name fehlt! ")
ElseIf txtName.Text = "Hugo" Then
If CInt(txtAlter.Text) < 10 Then
MessageBox.Show(Achtung: " & _
txtName.Text & "Jetzt gibt es Tee!")
Else
MessageBox.Show(Achtung: " & _
txtName.Text & _
"Jetzt gibt es Tee mit Rum!")
End If
ElseIf txtName.Text = "Maria" Then
If CInt(txtAlter.Text) < 10 Then
MessageBox.Show(Achtung: " & _
txtName.Text & _
"Jetzt gibt es Schokolade! ")
Else
MessageBox.Show(Achtung: " & _
txtName.Text & _
"Jetzt gibt es Schokolade mit Cognac! ")
End If
Else
MessageBox.Show(Achtung: " & txtName.Text & _
"Jetzt gibt es Kaffee! ")
End If
Abbildung 1.22
Ein dezenter Hinweis
Die allgemeine Syntax für die If-Verzweigung lautet:
If Bedingung Then
[Anweisung]
ElseIf Bedinung Then
[Anweisung]
ElseIf Bedinung Then
[Anweisung]
ElseIf Bedinung Then
[Anweisung]
Else
[Anweisung]
End If
Achtung: ElseIf wird in einem Wort zusammengeschrieben, während End If zwei Schlüsselwörter sind. Aber das ist fast kein Problem, denn nach der Zeile
If Bedingung Then
erscheint automatisch
End If
|